a11y: Set state on the GtkTreeExpander widget
authorEmmanuele Bassi <ebassi@gnome.org>
Wed, 21 Apr 2021 10:14:28 +0000 (11:14 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Wed, 21 Apr 2021 10:43:11 +0000 (11:43 +0100)
Instead of setting it on its internal child.

gtk/gtktreeexpander.c

index 8bad1f5e5bc75a80ea75d3add90c8c3b683d8c5f..fb23f6433dd69c436420a26ae35868b14210d782 100644 (file)
@@ -151,6 +151,8 @@ gtk_tree_expander_update_for_list_row (GtkTreeExpander *self)
           gtk_widget_unparent (child);
         }
       self->expander = NULL;
+
+      gtk_accessible_reset_state (GTK_ACCESSIBLE (self), GTK_ACCESSIBLE_STATE_EXPANDED);
     }
   else
     {
@@ -192,26 +194,27 @@ gtk_tree_expander_update_for_list_row (GtkTreeExpander *self)
               gtk_accessible_update_property (GTK_ACCESSIBLE (self->expander),
                                               GTK_ACCESSIBLE_PROPERTY_LABEL, _("Expand"),
                                               -1);
-              gtk_accessible_update_relation (GTK_ACCESSIBLE (self->expander),
-                                              GTK_ACCESSIBLE_RELATION_LABELLED_BY, self->child, NULL,
-                                              -1);
             }
 
           if (gtk_tree_list_row_get_expanded (self->list_row))
             {
               gtk_widget_set_state_flags (self->expander, GTK_STATE_FLAG_CHECKED, FALSE);
-              gtk_accessible_update_state (GTK_ACCESSIBLE (self->expander),
+              gtk_accessible_update_state (GTK_ACCESSIBLE (self),
                                            GTK_ACCESSIBLE_STATE_EXPANDED, TRUE,
                                            -1);
             }
           else
             {
               gtk_widget_unset_state_flags (self->expander, GTK_STATE_FLAG_CHECKED);
-              gtk_accessible_update_state (GTK_ACCESSIBLE (self->expander),
+              gtk_accessible_update_state (GTK_ACCESSIBLE (self),
                                            GTK_ACCESSIBLE_STATE_EXPANDED, FALSE,
                                            -1);
             }
 
+          gtk_accessible_update_relation (GTK_ACCESSIBLE (self),
+                                          GTK_ACCESSIBLE_RELATION_LABELLED_BY, self->child, NULL,
+                                          -1);
+
           child = gtk_widget_get_prev_sibling (self->expander);
         }
       else